package cn.tedu.store.product.service;

import cn.tedu.store.commons.pojo.product.dto.PictureAddNewDTO;
import cn.tedu.store.commons.pojo.product.dto.PictureUpdateDTO;
import cn.tedu.store.commons.pojo.product.vo.PictureListItemVO;
import cn.tedu.store.commons.pojo.product.vo.PictureStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 商品相册图片业务接口
 *
 * @author RelentlessFlow
 * @version 0.0.1
 */
@Transactional
public interface IPictureService {
    /**
     * 添加单张图片
     * @param pictureAddNewDTO 图片信息
     */
    void addNew(PictureAddNewDTO pictureAddNewDTO);

    /**
     * 批量添加图片
     * @param list 图片列表
     */
    void addNewBatch(List<PictureAddNewDTO> list);

    /**
     * 根据id删除图片
     * @param id 图片id
     */
    void deleteById(Long id);

    /**
     * 批量删除图片
     * @param ids 图片id数组
     */
    void deleteByIds(Long[] ids);

    void setIsCover(Long id);

    void setNotCover(Long id);

    /**
     * 根据id修改图片信息
     * @param id 图片id
     * @param pictureUpdateDTO 修改信息
     */
    void update(Long id, PictureUpdateDTO pictureUpdateDTO);

    /**
     * 根据相册id查询图片数量
     * @param albumId 相册id
     * @return 图片数量
     */
    int countByAlbum(Long albumId);

    /**
     * 根据id获取图片详情
     * @param id 图片id
     * @return 图片详情
     */
    PictureStandardVO getStandardById(Long id);

    /**
     * 根据相册id获取图片列表
     * @param albumId 相册id
     * @return 对应的图片列表
     */
    List<PictureListItemVO> listByAlbum(Long albumId);
}
